package com.haoyu.number.sort;

import java.util.Arrays;

/**
 * @author 蒿雨
 * @create 2021-12-03 19:44
 * 选择排序，类似于冒泡排序
 */
public class SelectSort {
    public static void main(String[] args) {
        //定义变量
        int[] arr = {1, -45, 740, 300};
        //调用排序方法
        selectSort(arr);
        System.out.println("排序后："+ Arrays.toString(arr));
    }

    //选择排序
    public static void selectSort(int[] arr) {
        //定义一个标记
        int minIndex = 0;
        //定义临时变量
        int temp = 0;
        //外圈循环4轮
        for (int i = 0; i < arr.length - 1; i++) {
            //获取到当前的数组下标
            minIndex = i;
            //j=当前下标的下一位，
            for (int j = i + 1; j < arr.length; j++) {
                //循环判断出首轮比较中的最小值，获取下标
                if (arr[j] < arr[minIndex]) {
                    minIndex = j;
                }
            }
            //把最小的值和进行交换，完成升序
            temp = arr[i];
            arr[i] = arr[minIndex];
            arr[minIndex] = temp;
        }

        //使用逐步推导的方式来进行
        //第1轮
//
//        int minIndex = 0;
//        int min = arr[0];
//        for (int j = 0+1; j < arr.length; j++) {
//            //说明假定的最小值，并不是最小
//            if (min>arr[j]){
//                //重置
//                min=arr[j];
//                minIndex=j;
//            }
//        }

    }

}
